﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace AgileShare.Framework.SiteProvisioning.Definitions
{
	/// <summary>
	/// Base class for List Instance Definition and List Template Definition
	/// </summary>
	public abstract class ListDefinitionBase
	{
		/// <summary>
		/// Initializes a new instance of the <see cref="ListDefinitionBase" /> class.
		/// </summary>
		public ListDefinitionBase()
		{
			this.ContentTypeIds = new List<SPContentTypeId>();
			this.ViewDefinitions = new List<ViewDefinition>();
		}

		/// <summary>
		/// Gets or sets the description.
		/// </summary>
		/// <value>
		/// The description.
		/// </value>
		public string Description { get; set; }

		/// <summary>
		/// Gets or sets the type of the template.
		/// </summary>
		/// <value>
		/// The type of the template.
		/// </value>
		public SPListTemplateType TemplateType { get; set; }

		/// <summary>
		/// Gets or sets the content type ids.
		/// </summary>
		/// <value>
		/// The content type ids.
		/// </value>
		public List<SPContentTypeId> ContentTypeIds { get; set; }

		/// <summary>
		/// Gets or sets the view definitions.
		/// </summary>
		/// <value>
		/// The view definitions.
		/// </value>
		public List<ViewDefinition> ViewDefinitions { get; set; }

		/// <summary>
		/// Gets or sets the allow deletion.
		/// </summary>
		/// <value>
		/// The allow deletion.
		/// </value>
		public bool? AllowDeletion { get; set; }

		/// <summary>
		/// Gets or sets the content types enabled.
		/// </summary>
		/// <value>
		/// The content types enabled.
		/// </value>
		public bool? ContentTypesEnabled { get; set; }

		/// <summary>
		/// Gets or sets the enable attachments.
		/// </summary>
		/// <value>
		/// The enable attachments.
		/// </value>
		public bool? EnableAttachments { get; set; }

		/// <summary>
		/// Gets or sets the enable folder creation.
		/// </summary>
		/// <value>
		/// The enable folder creation.
		/// </value>
		public bool? EnableFolderCreation { get; set; }

		/// <summary>
		/// Gets or sets the enable moderation.
		/// </summary>
		/// <value>
		/// The enable moderation.
		/// </value>
		public bool? EnableModeration { get; set; }

		/// <summary>
		/// Gets or sets the enable syndication.
		/// </summary>
		/// <value>
		/// The enable syndication.
		/// </value>
		public bool? EnableSyndication { get; set; }

		/// <summary>
		/// Gets or sets the hidden.
		/// </summary>
		/// <value>
		/// The hidden.
		/// </value>
		public bool? Hidden { get; set; }

		/// <summary>
		/// Gets or sets the on quick launch.
		/// </summary>
		/// <value>
		/// The on quick launch.
		/// </value>
		public bool? OnQuickLaunch { get; set; }
	}
}
